{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ee2ab295-34a1-4dc8-8de2-16249125bdc6",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OK\n"
     ]
    }
   ],
   "source": [
    "2344565555667776653===================================="
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "dde9b4dd-7495-4ef3-b123-06086e6702e8",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'torch'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_4091139/4265195184.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'torch'"
     ]
    }
   ],
   "source": [
    "import torch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2a3e4d72-be06-4aea-8aee-bedb333b3660",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "bf92b445-104a-4dd4-a077-7f28e2386b61",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "75c5bb3d-ea21-46a1-8e9d-692d19c46ac1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OK\n"
     ]
    }
   ],
   "source": [
    "print(\"OK\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f6308fef-90a8-4130-b16f-f309a2b74812",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "4+5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "7e1135f8-63ba-40e6-a87e-34081ff0c588",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "13750005767.98262"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "34234*374343.34343+934735749"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "bbc2978e-fcc8-4628-b435-53e491b8aeb9",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import math"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "079269c5-5840-4460-aee7-f6e09de51a73",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'PI' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_4105563/3584137402.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPI\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'PI' is not defined"
     ]
    }
   ],
   "source": [
    "print(PI)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "81a6ce47-dbcf-4ad0-9373-74c5e53893a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0.98, 'Categorical Plotting')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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NzdHz549YWtr2+a4TExMEBcXh1mzZmHy5Ml47rnncOfOnUbfSyIinSHpqbFERPeRlJQkZsyYIby8vISFhYWwtrYWwcHB4t1339XoqpKQkCDCw8OFlZWV6NKli5g5c6Y4ffp0g44slZWVYubMmaJLly5CJpM16FTyn//8R4SFhQlra2thaWkpunfvLp555hmRmJioHqNSqcSSJUtE165dhYWFhejbt6/YvXu36NevX4OOLdeuXRPTpk0Tjo6OwtzcXPTs2VOsXLlSKJVK9Zi6LigrV65ssP+NdZURQojk5GQxZcoU4ejoKCwsLISXl5eIiYkRFRUV6v184403hIeHh1AoFCIkJETs3LlTzJgxo0G3FLSiq8zcuXObHXdvV5mWvg5CCPHDDz+I4OBgIZfLBQCN9SxYsEC4u7sLExMTAUAcPHhQCNF0V5nGXs/G9nXdunXCz89PWFhYCH9/f/Gf//xHjB8/XgQHBze7r0REHU0mhBBS/WggIjIE6enp6NWrFxYtWoS//OUvUodDD+DOnTvw9/fHE088gXXr1kkdDhGRBhbuREStcPbsWWzatAkRERGws7NDamoqPvjgAxQXF+PChQtNdqYh3ZObm4ulS5di+PDhcHR0xLVr1/Dhhx/i0qVLSExMRO/evaUOkYhIA+e4ExG1grW1NRITE/Hvf/8bd+7cgb29PSIjI7F06VIW7XpGLpcjIyMDc+bMQWFhIaysrDB48GB88sknLNqJSCfxiDsRERERkR7gafNERERERHqAhTsRERERkR5g4U5EREREpAdYuBMRERER6QEW7kREREREeoCFOxERERGRHmDhTkRERESkB1i4ExERERHpARbuRERERER6gIU7EREREZEeYOFORERERKQHWLgTEREREekBM6kDuJdKpUJ2djZsbW0hk8mkDodILwghUFJSAnd3d5iY6ObvceY2Ueswr4kMz4Pmtc4V7tnZ2fD09JQ6DCK9lJmZia5du0odRqOY20Rtw7wmMjxtzWudK9xtbW0B1O6QnZ2dxNEQ6Yfi4mJ4enqq80cXMbeJWod5TWR4HjSvda5wr/tTm52dHb8EiFpJl/9UzdwmahvmNZHhaWte6+akOSIiIiIi0sDCnYiIiIhID7BwJyIiIiLSAzo3x52IiMhQKVUCJ9ILkVdSAWdbBQb5OsDURHfnsBORbmnVEffly5dj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Lavbn7Z+bvSBPuVhWxhq7raVseZ8W+j79wRzu5Yx5DbzuuWkymu9L9wLCgqQkpKCTz/9FA8//DAA4Keffmow7vjx4xg6dCgAoKamBqdOncLLL7/cYIyXlxeA2pMoLl++jF69ejW63ZCQEKSmpsLPz69V8fr5+cHCwgI//fQTpk2bBgCorq5GYmLifXuoHj16FDExMZgwYQIAoLS0FBkZGa3adq9evfDll1+isrIScrkcAJCYmKgxJiQkBF9//TV8fHxadcZ8cHAwlEol8vLy1O+DNgQGBqKmpga//PILIiIiANS+55cvX0ZAQIDWttNR2vq50XX6lodtYai521bM+fajS98TzO3XmnyeIeY287r9aOszrfddZTp37gxHR0esW7cOaWlpOHDgAObNm9dg3OrVq7Fjxw5cunQJc+fOxe3bt/Hcc89pjFm8eDF+/PFHXLhwATExMXBycsITTzzR6HbfffddbNy4EbGxsbh48SJSUlKwZcsWvP322/eN19raGrNnz8b8+fMRHx+P5ORkvPDCCygrK8Pzzz/f5PP8/Pywfft2JCUl4ezZs5g2bZr6V1xL1T3nxRdfREpKivpIAfD7L8O5c+eisLAQU6dOxYkTJ/Drr7/i+++/x3PPPadxdvi9/P398cc//hHPPPMMtm/fjvT0dJw8eRIrVqzA3r17WxVnfT169MD48ePxwgsv4KeffsLZs2cxffp0eHh4YPz48W1er1Ta+rnRdfqWh21hqLnbVsz59qNL3xPMbePKbeZ1+9HWZ1rvC3cTExNs3rwZp06dQlBQEF5//XWsXLmywbj3338fK1asQL9+/XD06FF88803cHJyajDm1VdfxYABA5CTk4Nvv/0WFhYWjW539OjR2L17N/bv34+BAwdi8ODBWLVqFby9vZuN+f3338ekSZPw9NNPIyQkBGlpadi3bx86d+7c5HM+/PBDdO7cGREREYiOjsbo0aMREhLS7Lbqs7Ozw65du5CUlIT+/ftj4cKFePfddwH8/mcad3d3/Pzzz1AqlRg9ejSCgoLw6quvwt7eHiYm9/+4fPbZZ3jmmWfw5z//GT179sTjjz+OX375BZ6enq2Ks7H1DhgwAOPGjUN4eDiEENi7d2+DP6npgwf53OgyfczDtjDU3G0r5nz70KXvCea28eU287p9aOszLRO6OnlISzIyMuDr64szZ86gf//+jY45dOgQhg8fjtu3bxvdJZe//PJLPPvssygqKoKlpaXU4ZCBYh5qH3OXdAFzW/uY23Q/ej/HnVpn48aN6NatGzw8PHD27Fn83//9H5588kl+ORDpOOYukWFiblNrsHA3Mrm5uXj33XeRm5sLNzc3TJkyRaM1ERHpJuYukWFiblNrGPxUGSIiIiIiQ6D3J6cSERERERkDFu5ERERERHqAhTsRERERkR5g4U5EREREpAdYuBMRERER6QEW7kREREREeoCFOxERERGRHmDhTkRERESkB/4frk8NBWb7QMgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 900x300 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "data = {'apple': 10, 'orange': 15, 'lemon': 5, 'lime': 20}\n",
    "names = list(data.keys())\n",
    "values = list(data.values())\n",
    "\n",
    "fig, axs = plt.subplots(1, 3, figsize=(9, 3), sharey=True)\n",
    "axs[0].bar(names, values)\n",
    "axs[1].scatter(names, values)\n",
    "axs[2].plot(names, values)\n",
    "fig.suptitle('Categorical Plotting')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "ce45801b-4489-49fb-bdb5-d96ac97b0736",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "'AxesSubplot' object is not subscriptable",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_4105563/1293870935.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msharey\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0maxs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnames\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      9\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuptitle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Categorical Plotting'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mTypeError\u001b[0m: 'AxesSubplot' object is not subscriptable"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 300x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "data = {'apple': 10, 'orange': 15, 'lemon': 5, 'lime': 20}\n",
    "names = list(data.keys())\n",
    "values = list(data.values())\n",
    "\n",
    "fig, axs = plt.subplots(1, 1, figsize=(3, 3), sharey=True)\n",
    "axs[0].bar(names, values)\n",
    "fig.suptitle('Categorical Plotting')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "ae91c2f8-fd25-4177-9e86-82b966b2aff3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2023-10-26T05:36:55.886942'"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import datetime, timedelta\n",
    "ct = datetime.utcnow()\n",
    "ct.isoformat()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9a50bfb2-00e8-45a0-b327-579788bb6c3e",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2023-10-26T05:30:29.179410+00:00'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pytz\n",
    "ct = datetime.utcnow().replace(tzinfo=pytz.UTC)\n",
    "ct.isoformat()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6a064919-f444-4666-a9f2-8c99d5560738",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "start_time = datetime.utcnow().replace(tzinfo=pytz.UTC)\n",
    "end_time = start_time + timedelta(hours=24)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c3190f39-dfa6-4db9-8097-592942dde434",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "diff = end_time - start_time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a55cf8db-881e-4511-b36b-8e084352144f",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.timedelta(days=1)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "4797b1be-ae28-42f4-b5de-253b6dc7ec3b",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "288"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "int(diff.total_seconds()/300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "799beb21-2787-48a9-902f-0ff93b2c0965",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "86400.0"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff.total_seconds()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c3b43343-b0a7-4d4c-b907-c7a31c0e015c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "52df6a53-1798-4130-bf1c-f6fcd486bd24",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(7, 7, 15)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "NUM_BBOX=2\n",
    "CLASSES=5\n",
    "\n",
    "labels = np.zeros((7,7,5*NUM_BBOX+CLASSES))\n",
    "print(labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b7ca3b7a-53b6-43df-b07a-b4de96385607",
   "metadata": {},
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'transformers'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtransformers\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BertTokenizer\n",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'transformers'"
     ]
    }
   ],
   "source": [
    "from transformers import BertTokenizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b6adb372-18dc-487d-986d-a7096fef3d7b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n",
      "\u001b[33mWARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7e8b462c1360>, 'Connection to mirrors.aliyun.com timed out. (connect timeout=15)')': /pypi/simple/transformers/\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7e8b462c1660>, 'Connection to mirrors.aliyun.com timed out. (connect timeout=15)')': /pypi/simple/transformers/\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7e8b462c17e0>, 'Connection to mirrors.aliyun.com timed out. (connect timeout=15)')': /pypi/simple/transformers/\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7e8b462c18d0>, 'Connection to mirrors.aliyun.com timed out. (connect timeout=15)')': /pypi/simple/transformers/\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7e8b462c1a50>, 'Connection to mirrors.aliyun.com timed out. (connect timeout=15)')': /pypi/simple/transformers/\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[31mERROR: Could not find a version that satisfies the requirement transformers (from versions: none)\u001b[0m\u001b[31m\n",
      "\u001b[0m\u001b[31mERROR: No matching distribution found for transformers\u001b[0m\u001b[31m\n",
      "\u001b[0m\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n",
      "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install transformers\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f1ef5f78-58e5-44c5-8fde-416a8e81e170",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
